package cn.glinks.liuhe.activity;

import static android.R.id.message;

import android.os.Bundle;
import android.widget.EditText;
import butterknife.BindView;
import butterknife.OnClick;
import cn.glinks.liuhe.R;
import cn.glinks.liuhe.api.ApiConstants;
import cn.glinks.liuhe.api.ApiRequest;
import cn.glinks.liuhe.api.jsonbean.UserInfo;
import cn.glinks.liuhe.app.AppApplication;
import cn.glinks.liuhe.app.AppConstant;
import cn.glinks.liuhe.app.AppManager;
import cn.glinks.liuhe.base.BaseActivity;
import cn.glinks.liuhe.baserx.RxSubscriber;
import cn.glinks.liuhe.utils.ActTransAnimUtils;
import cn.glinks.liuhe.utils.FormatUtils;
import cn.glinks.liuhe.utils.GsonUtils;
import cn.glinks.liuhe.utils.SPUtils;
import cn.glinks.liuhe.utils.ToastUtils;
import cn.glinks.liuhe.widget.iOSDialog;


/**
 * Des:登录页面
 *
 * @author MarsBlade of Cyh
 * @created 2017-03-21 14:43
 */
public class LoginActivity extends BaseActivity {

  @BindView(R.id.et_phone)
  EditText mPhoneEdit;

  @BindView(R.id.et_passwd)
  EditText mPasswdEdit;

  // 变量
  private String mPhoneStr;
  private String mPasswdStr;

  @Override
  public int getLayoutId() {
    return R.layout.activity_login;
  }

  @Override
  public void initView(Bundle savedInstanceState) {
    // 设置为透明状态栏
    SetTranslanteBar();
  }

  /*--------------------------------------------------------------------------------
   *                          点击事件接口实现
   ---------------------------------------------------------------------------------*/
  // 登录
  @OnClick(R.id.btn_login)
  public void clickLogin() {
    // 获取数据
    mPhoneStr = mPhoneEdit.getText().toString().trim();
    mPasswdStr = mPasswdEdit.getText().toString().trim();
    // 检查数据有效性
    if (mPhoneStr.isEmpty() || !FormatUtils.isMobileNO(mPhoneStr)) {
      ToastUtils.showShort("请输入正确的手机号");
      return;
    }
    if ((mPasswdStr.length() < 6) || (mPasswdStr.length() > 16)) {
      ToastUtils.showShort("密码长度范围6~16");
      return;
    }
    // 发送网络请求
    mRxManager.add(ApiRequest.requestLogin(mPhoneStr, mPasswdStr)
        .subscribe(new RxSubscriber<String>(mContext) {
          @Override
          protected void _onNext(String msg) {
            // 响应处理
            if (GsonUtils.getIntValue(msg, "error") == 0) {
              // 解析响应
              String result = GsonUtils.getValue(msg, "result");
              UserInfo userInfo = (UserInfo) GsonUtils.fromJson(result, UserInfo.class);
              if (userInfo.getTestTask() != null) {
                ToastUtils.showShort("登录成功");
                // 保存用户信息
                ((AppApplication) getApplicationContext()).setLoginUser(userInfo);
                // 标记为已登录状态
                ((AppApplication) getApplicationContext()).setIsUserLogin(true);
                // 跳转到开始测评页面
                ActTransAnimUtils
                    .startActionSlideRightToLeft(LoginActivity.this, StartTestActivity.class);
                finish();
              } else {
                iOSDialog.showRadioDialog(LoginActivity.this, "提示", "当前没有测评任务, 点击确定退出",
                    new iOSDialog.DialogClickListener() {
                      @Override
                      public void confirm() {
                        //退出测评软件
                        AppManager.getAppManager().AppExit(LoginActivity.this, false);
                      }

                      @Override
                      public void cancel() {

                      }
                    });
              }
            } else {
              String reason = GsonUtils.getValue(msg, "reason");
              ApiConstants.showError(reason);
            }
          }

          @Override
          protected void _onError(String message) {
            // TODO:处理失败响应
            ToastUtils.showShort("登录失败:" + message);
          }
        }));
  }

  // 忘记密码
  @OnClick(R.id.tv_forget_passwd)
  public void clickToForgetPasswd() {
    ActTransAnimUtils.startActionSlideRightToLeft(this, ForgetPasswdActivity.class);
  }

  // 立即注册
  @OnClick(R.id.tv_register)
  public void clickToRegister() {
    // 发送网络请求,获取公司列表, 获取成功后跳转到注册页面
    mRxManager.add(ApiRequest.requestGetCompanyList()
        .subscribe(new RxSubscriber<String>(mContext) {
          @Override
          protected void _onNext(String msg) {
            // 响应处理
            if (GsonUtils.getValue(msg, "companies") != null) {
              // 保存到SP文件
              SPUtils.setSharedStringData(LoginActivity.this, AppConstant.SP_KEY_COMPANY_JSON, msg);
              // 跳转到注册界面
              ActTransAnimUtils.startActionSlideRightToLeft(LoginActivity.this, RegisterActivity.class);
            } else {
              ToastUtils.showShort("公司列表拉取失败:" + message);
            }
          }

          @Override
          protected void _onError(String message) {
            // TODO:处理失败响应
            ToastUtils.showShort("公司列表拉取失败:" + message);
          }
        }));
  }

}
